home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / grafik / 3d & render tools / irit / contrib / skeleton / skel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-16  |  2.9 KB  |  78 lines

  1. /*****************************************************************************
  2. * Skeleton for an interface to a parser to read IRIT data files.         *
  3. *                                         *
  4. * Written by:  Gershon Elber                Ver 1.0, Feb 1993    *
  5. *****************************************************************************/
  6.  
  7.  
  8. #include <stdio.h>
  9. #include "irit_sm.h"
  10. #include "cagd_lib.h"
  11. #include "symb_lib.h"
  12. #include "iritprsr.h"
  13. #include "attribut.h"
  14. #include "allocate.h"
  15.  
  16. /*****************************************************************************
  17. * DESCRIPTION:                                                               M
  18. * Main module of skel - Read command line and do what is needed...         M
  19. *                                                                            *
  20. * PARAMETERS:                                                                M
  21. *   argc, argv:  Command line.                                               M
  22. *                                                                            *
  23. * RETURN VALUE:                                                              M
  24. *   void                                                                     M
  25. *                                                                            *
  26. * KEYWORDS:                                                                  M
  27. *   main                                                                     M
  28. *****************************************************************************/
  29. void main(int argc, char **argv)
  30. {
  31.     int Handler;
  32.     IPObjectStruct *PObjects, *PObj;
  33.  
  34.     /* Get the data from the input stream: */
  35.     if ((Handler = IritPrsrOpenStreamFromFile(stdin, TRUE,
  36.                           FALSE, FALSE)) >= 0) {
  37.     PObjects = IritPrsrGetObjects(Handler);
  38.     IritPrsrCloseStream(Handler, TRUE);
  39.     }
  40.     else
  41.         exit(1);
  42.  
  43.     /* Print the read geometry to stdout. */
  44.     for (PObj = PObjects; PObj != NULL; PObj = PObj -> Pnext)
  45.     IritPrsrStdoutObject(PObj);
  46.  
  47.     /* Do some symbolic manipulation of curves: */
  48.     for (PObj = PObjects; PObj != NULL; PObj = PObj -> Pnext) {
  49.     if (IP_IS_CRV_OBJ(PObj)) {
  50.         char *Err;
  51.         CagdCrvStruct
  52.             *DerivCrv = CagdCrvDerive(PObj -> U.Crvs),
  53.         *DegreeRaiseCrv = CagdCrvDegreeRaise(PObj -> U.Crvs),
  54.         *TanMagSqr = SymbCrvDotProd(DerivCrv, DerivCrv),
  55.             *DiffZero = SymbCrvSub(PObj -> U.Crvs, DegreeRaiseCrv);
  56.         CagdSrfStruct
  57.             *SrfOfRev = CagdSurfaceRev(PObj -> U.Crvs),
  58.         *SweepSrf = CagdSweepSrf(PObj -> U.Crvs, PObj -> U.Crvs,
  59.                      NULL, 1.0, NULL, FALSE);
  60.  
  61.         CagdCrvWriteToFile3(DiffZero, stdout, 0, "A Zero Curve", &Err);
  62.         CagdCrvWriteToFile3(TanMagSqr, stdout, 0,
  63.                 "Magnitude of Tangent Square", &Err);
  64.         CagdCrvFree(DiffZero);
  65.         CagdCrvFree(TanMagSqr);
  66.         CagdCrvFree(DegreeRaiseCrv);
  67.  
  68.         CagdSrfWriteToFile3(SrfOfRev, stdout, 0, "A Surface of revolution",
  69.                 &Err);
  70.         CagdSrfWriteToFile3(SweepSrf, stdout, 0, "A Sweep Surface",
  71.                 &Err);
  72.  
  73.         CagdSrfFree(SrfOfRev);
  74.         CagdSrfFree(SweepSrf);
  75.     }
  76.     }
  77. }
  78.